package com.design.factory.simple.instance01;

/**
 * 简单工厂模式
 * 描述: 通过实例化一个工厂类，来获取对应的产品实例。我们不需要关注产品本身如何被创建的细节，
 *      只需要通过相应的工厂就可以获得相应的实例
 * 简单工厂的优点：
 * 1.不需要关心类的创建细节。
 * 2.减轻类之间的耦合依赖，具体类的实现只是依赖于简单工厂，而不依赖其他类。
 *
 * 简单工厂的缺点：
 * 1.扩展复杂，当简单工厂需要生产出另外一种产品的时候，需要扩展工厂的内部创建逻辑，比较有可能引起较大的故障
 * 2.由于工厂类集中了所有实例的创建逻辑，违反了高内聚责任分配原则，将全部创建逻辑集中到了一个工厂类中
 *
 */
public abstract class CarFactory {

    public static Car getInstance(Class<? extends Car> clazz){
        try {
            return clazz.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

}
